1 module android_entry; 2 3 version(Android): 4 import app; 5 import hip.jni.helper.androidlog; 6 import hip.jni.jni; 7 import hip.jni.helper.jnicall; 8 ///Setups an Android Package for HipremeEngine 9 alias HipAndroid = javaGetPackage!("com.hipremeengine.app.HipremeEngine"); 10 import hip.systems.input; 11 import hip.console.log; 12 13 export extern(C) 14 { 15 private __gshared bool _hasExecInit = false; 16 void Java_com_hipremeengine_app_HipremeEngine_HipremeInit(JNIEnv* env, jclass clazz) 17 { 18 if(!_hasExecInit) 19 { 20 _hasExecInit = true; 21 import hip.filesystem.systems.android; 22 HipremeInit(); 23 JNISetEnv(env); 24 aaMgr = cast(AAssetManager*)HipAndroid.javaCall!(Object, "getAssetManager"); 25 aaMgr = AAssetManager_fromJava(env, aaMgr); 26 } 27 } 28 29 private __gshared bool _hasExecMain; 30 private __gshared int _mainRet; 31 jint Java_com_hipremeengine_app_HipremeEngine_HipremeMain(JNIEnv* env, jclass clazz) 32 { 33 if(!_hasExecMain) 34 { 35 _hasExecMain = true; 36 int[2] wsize = HipAndroid.javaCall!(int[2], "getWindowSize"); 37 _mainRet = HipremeMain(wsize[0], wsize[1]); 38 } 39 return _mainRet; 40 } 41 jboolean Java_com_hipremeengine_app_HipremeEngine_HipremeUpdate(JNIEnv* env, jclass clazz) 42 { 43 return HipremeUpdate(); 44 } 45 void Java_com_hipremeengine_app_HipremeEngine_HipremeRender(JNIEnv* env, jclass clazz) 46 { 47 HipremeRender(); 48 } 49 50 void Java_com_hipremeengine_app_HipremeEngine_HipremeReinitialize(JNIEnv* env, jclass clazz) 51 { 52 import hip.hiprenderer.renderer; 53 HipRenderer.reinitialize(); 54 } 55 56 void Java_com_hipremeengine_app_HipremeEngine_HipremeDestroy(JNIEnv* env, jclass clazz) 57 { 58 JNISetEnv(null); 59 HipremeDestroy(); 60 } 61 }